In [1]:
import pandas as pd
from prophet import Prophet
import os
import plotly.graph_objects as go
In [2]:
os.chdir("/Users/abyvelazquez/Developer/Repos/DS_Projects/Criminalidad/data/")
data_set = pd.read_csv("data_preparation.csv")
In [3]:
data_set.head()
Out[3]:
idCarpeta Delito riesgo_delito Sexo Edad rango_edad TipoPersona CalidadJuridica Mes_hecho FechaHecho Dias_transcurridos count_semanas HoraHecho HoraInicio poblacion_alcaldia alcaldia_hechos
0 8324429.0 FRAUDE 5 Masculino 62.0 Adultos mayores FISICA OFENDIDO Agosto 29/08/2018 128 974 12:00 12:19 759137 ALVARO OBREGON
1 8324430.0 PRODUCCIÓN, IMPRESIÓN, ENAJENACIÓN, DISTRIBUCI... 8 Femenino 38.0 Adultos jóvenes FISICA VICTIMA Y DENUNCIANTE Diciembre 15/12/2018 20 990 15:00 12:20 432205 AZCAPOTZALCO
2 8324431.0 ROBO A TRANSEUNTE SALIENDO DEL BANCO CON VIOLE... 10 Masculino 42.0 Adultos de mediana edad FISICA VICTIMA Y DENUNCIANTE Diciembre 22/12/2018 13 991 15:30 12:23 614447 COYOACAN
3 8324435.0 ROBO DE VEHICULO DE SERVICIO PARTICULAR SIN VI... 3 Masculino 35.0 Adultos jóvenes FISICA VICTIMA Y DENUNCIANTE Enero 04/01/2019 0 992 06:00 12:27 404695 IZTACALCO
4 8324438.0 ROBO DE MOTOCICLETA SIN VIOLENCIA 3 Masculino 39.0 Adultos jóvenes FISICA VICTIMA Enero 03/01/2019 1 992 20:00 12:35 1835486 IZTAPALAPA
In [4]:
data_set.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 961666 entries, 0 to 961665
Data columns (total 16 columns):
 #   Column              Non-Null Count   Dtype  
---  ------              --------------   -----  
 0   idCarpeta           961666 non-null  float64
 1   Delito              961666 non-null  object 
 2   riesgo_delito       961666 non-null  int64  
 3   Sexo                961666 non-null  object 
 4   Edad                961666 non-null  float64
 5   rango_edad          961666 non-null  object 
 6   TipoPersona         961666 non-null  object 
 7   CalidadJuridica     961666 non-null  object 
 8   Mes_hecho           961666 non-null  object 
 9   FechaHecho          961666 non-null  object 
 10  Dias_transcurridos  961666 non-null  int64  
 11  count_semanas       961666 non-null  int64  
 12  HoraHecho           961666 non-null  object 
 13  HoraInicio          961666 non-null  object 
 14  poblacion_alcaldia  961666 non-null  int64  
 15  alcaldia_hechos     961666 non-null  object 
dtypes: float64(2), int64(4), object(10)
memory usage: 117.4+ MB
In [5]:
data_set[["FechaHecho"]] = data_set[["FechaHecho"]].apply(pd.to_datetime)
/var/folders/30/qpjmvdzs0ng9dh1bzzwc7brh0000gn/T/ipykernel_79014/1220358193.py:1: UserWarning: Parsing dates in DD/MM/YYYY format when dayfirst=False (the default) was specified. This may lead to inconsistently parsed dates! Specify a format to ensure consistent parsing.
  data_set[["FechaHecho"]] = data_set[["FechaHecho"]].apply(pd.to_datetime)
In [6]:
fecha_delitos = data_set.groupby(data_set['FechaHecho'].dt.date).size().reset_index(name='Conteo')
# tambien limitamos la fecha delitos a los anios 2019, 2020, 2021, y 2022
fecha_delitos["FechaHecho"] = fecha_delitos["FechaHecho"].astype("datetime64")
fecha_delitos = fecha_delitos.loc[(fecha_delitos['FechaHecho'] >= '2019-01-01')]
In [7]:
data_set.loc[data_set['FechaHecho'] == "2022-12-27"].count()
Out[7]:
idCarpeta             405
Delito                405
riesgo_delito         405
Sexo                  405
Edad                  405
rango_edad            405
TipoPersona           405
CalidadJuridica       405
Mes_hecho             405
FechaHecho            405
Dias_transcurridos    405
count_semanas         405
HoraHecho             405
HoraInicio            405
poblacion_alcaldia    405
alcaldia_hechos       405
dtype: int64
In [8]:
fecha_delitos.tail()
Out[8]:
FechaHecho Conteo
4836 2022-12-27 405
4837 2022-12-28 384
4838 2022-12-29 340
4839 2022-12-30 261
4840 2022-12-31 132

Con esto comprobamos que si esta agrupando de manera correcta, con 405 delitos cometidos en diciembre del 2022

In [9]:
fecha_delitos_alcaldias = data_set.groupby([data_set['FechaHecho'].dt.date, "alcaldia_hechos"]).size().reset_index(name='Conteo')
In [10]:
fecha_delitos_alcaldias
Out[10]:
FechaHecho alcaldia_hechos Conteo
0 2000-01-01 CUAUHTEMOC 4
1 2000-01-01 GUSTAVO A. MADERO 1
2 2000-01-01 IZTACALCO 1
3 2000-01-01 IZTAPALAPA 2
4 2000-01-01 XOCHIMILCO 1
... ... ... ...
34037 2022-12-31 MILPA ALTA 1
34038 2022-12-31 TLAHUAC 3
34039 2022-12-31 TLALPAN 2
34040 2022-12-31 VENUSTIANO CARRANZA 9
34041 2022-12-31 XOCHIMILCO 2

34042 rows × 3 columns

Como tenemos delitos cometidos desde el 2001, para los modelos predictivos y que tomen en cuenta los ciclos por año necesita, vemos un histograma de el numero de delitos por año, y vemos que existe un valor similar en el 2019, 2020, 2021, 2022, por lo que puede considerar los ultimos 4 años para predecir el futuro es una buena estrategia.

In [11]:
fecha_delitos_alcaldias["FechaHecho"] = fecha_delitos_alcaldias["FechaHecho"].astype("datetime64")
fecha_delitos_alcaldias.groupby(fecha_delitos_alcaldias["FechaHecho"].dt.year).count().plot(kind="bar")
Out[11]:
<Axes: xlabel='FechaHecho'>
In [12]:
fecha_delitos_alcaldias = fecha_delitos_alcaldias.loc[(fecha_delitos_alcaldias['FechaHecho'] >= '2019-01-01')]
In [13]:
print(fecha_delitos_alcaldias["alcaldia_hechos"].unique())
['ALVARO OBREGON' 'AZCAPOTZALCO' 'BENITO JUAREZ' 'COYOACAN'
 'CUAJIMALPA DE MORELOS' 'CUAUHTEMOC' 'GUSTAVO A. MADERO' 'IZTACALCO'
 'IZTAPALAPA' 'LA MAGDALENA CONTRERAS' 'MIGUEL HIDALGO' 'MILPA ALTA'
 'TLAHUAC' 'TLALPAN' 'VENUSTIANO CARRANZA' 'XOCHIMILCO']

Haremos un modelo con prophet para cada alcaldia, para si evaluar diferentes patrones en los datos y ver una estimacion de delitos por alcaldia

Para Alcaldia Alvaro Obregon¶

In [14]:
fecha_delitos_alvaro_obregon = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] == "ALVARO OBREGON"]
fecha_delitos_alvaro_obregon=fecha_delitos_alvaro_obregon.drop('alcaldia_hechos', axis=1)
fecha_delitos_alvaro_obregon.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_alvaro_obregon.head()
Out[14]:
ds y
10673 2019-01-01 56
10689 2019-01-02 79
10705 2019-01-03 45
10721 2019-01-04 61
10737 2019-01-05 59
In [15]:
m_alvaro_obregon = Prophet()
m_alvaro_obregon.fit(fecha_delitos_alvaro_obregon)
14:58:03 - cmdstanpy - INFO - Chain [1] start processing
14:58:03 - cmdstanpy - INFO - Chain [1] done processing
Out[15]:
<prophet.forecaster.Prophet at 0x7fc57588f6d0>
In [16]:
# Hacemos un dataframe de fechas futuras
future_alvaro_obregon = m_alvaro_obregon.make_future_dataframe(periods=365)
future_alvaro_obregon.tail()
Out[16]:
ds
1821 2023-12-27
1822 2023-12-28
1823 2023-12-29
1824 2023-12-30
1825 2023-12-31
In [17]:
forecast_alvaro_obregon = m_alvaro_obregon.predict(future_alvaro_obregon)
forecast_alvaro_obregon[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
Out[17]:
ds yhat yhat_lower yhat_upper
1821 2023-12-27 31.370305 19.995359 43.637594
1822 2023-12-28 31.825898 19.890772 44.794091
1823 2023-12-29 33.764017 22.866689 45.338303
1824 2023-12-30 30.212814 17.505819 42.190659
1825 2023-12-31 30.070744 17.234023 42.404025
In [18]:
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_alvaro_obregon, forecast_alvaro_obregon)
In [19]:
plot_components_plotly(m_alvaro_obregon, forecast_alvaro_obregon)

Para Alcaldia Azcapotzalco¶

In [20]:
fecha_delitos_azcapotzalco = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
                                                         "AZCAPOTZALCO"]
fecha_delitos_azcapotzalco=fecha_delitos_azcapotzalco.drop('alcaldia_hechos', axis=1)
fecha_delitos_azcapotzalco.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_azcapotzalco.head()
Out[20]:
ds y
10674 2019-01-01 29
10690 2019-01-02 52
10706 2019-01-03 36
10722 2019-01-04 44
10738 2019-01-05 34
In [21]:
m_azcapotzalco = Prophet()
m_azcapotzalco.fit(fecha_delitos_azcapotzalco)
14:58:05 - cmdstanpy - INFO - Chain [1] start processing
14:58:05 - cmdstanpy - INFO - Chain [1] done processing
Out[21]:
<prophet.forecaster.Prophet at 0x7fc57048fb20>
In [22]:
# Hacemos un dataframe de fechas futuras
future_azcapotzalco = m_azcapotzalco.make_future_dataframe(periods=365)
future_azcapotzalco.tail()
Out[22]:
ds
1821 2023-12-27
1822 2023-12-28
1823 2023-12-29
1824 2023-12-30
1825 2023-12-31
In [23]:
forecast_azcapotzalco = m_azcapotzalco.predict(future_azcapotzalco)
forecast_azcapotzalco[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
Out[23]:
ds yhat yhat_lower yhat_upper
1821 2023-12-27 26.471974 16.731240 35.822041
1822 2023-12-28 26.330372 17.336206 36.390479
1823 2023-12-29 27.538392 18.520059 36.665571
1824 2023-12-30 24.942665 16.105692 34.277417
1825 2023-12-31 24.503692 15.292994 33.887323
In [24]:
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_azcapotzalco, forecast_azcapotzalco)
In [25]:
plot_components_plotly(m_azcapotzalco, forecast_azcapotzalco)
In [ ]:
 

Para Alcaldia Benito Juarez¶

In [26]:
fecha_delitos_benito_juarez = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
                                                         "BENITO JUAREZ"]
fecha_delitos_benito_juarez=fecha_delitos_benito_juarez.drop('alcaldia_hechos', axis=1)
fecha_delitos_benito_juarez.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_benito_juarez.head()
Out[26]:
ds y
10675 2019-01-01 36
10691 2019-01-02 87
10707 2019-01-03 77
10723 2019-01-04 89
10739 2019-01-05 86
In [27]:
m_benito_juarez = Prophet()
m_benito_juarez.fit(fecha_delitos_benito_juarez)
14:58:06 - cmdstanpy - INFO - Chain [1] start processing
14:58:06 - cmdstanpy - INFO - Chain [1] done processing
Out[27]:
<prophet.forecaster.Prophet at 0x7fc5704edc00>
In [28]:
# Hacemos un dataframe de fechas futuras
future_benito_juarez = m_benito_juarez.make_future_dataframe(periods=365)
future_benito_juarez.tail()
Out[28]:
ds
1821 2023-12-27
1822 2023-12-28
1823 2023-12-29
1824 2023-12-30
1825 2023-12-31
In [29]:
forecast_benito_juarez = m_benito_juarez.predict(future_benito_juarez)
forecast_benito_juarez[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
Out[29]:
ds yhat yhat_lower yhat_upper
1821 2023-12-27 32.546187 15.793759 48.350933
1822 2023-12-28 33.729427 17.395896 48.166004
1823 2023-12-29 35.816093 19.823229 51.699352
1824 2023-12-30 26.537661 10.487190 42.445270
1825 2023-12-31 24.091896 8.716281 40.179067
In [30]:
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_benito_juarez, forecast_benito_juarez)
In [31]:
plot_components_plotly(m_benito_juarez, forecast_benito_juarez)
In [ ]:
 

Para Alcaldia Coyoacan¶

In [32]:
fecha_delitos_coyoacan = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
                                                         "COYOACAN"]
fecha_delitos_coyoacan=fecha_delitos_coyoacan.drop('alcaldia_hechos', axis=1)
fecha_delitos_coyoacan.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_coyoacan.head()
Out[32]:
ds y
10676 2019-01-01 35
10692 2019-01-02 60
10708 2019-01-03 55
10724 2019-01-04 48
10740 2019-01-05 45
In [33]:
m_coyoacan = Prophet()
m_coyoacan.fit(fecha_delitos_coyoacan)
14:58:08 - cmdstanpy - INFO - Chain [1] start processing
14:58:08 - cmdstanpy - INFO - Chain [1] done processing
Out[33]:
<prophet.forecaster.Prophet at 0x7fc573aff0a0>
In [34]:
# Hacemos un dataframe de fechas futuras
future_coyoacan = m_coyoacan.make_future_dataframe(periods=365)
future_coyoacan.tail()
Out[34]:
ds
1821 2023-12-27
1822 2023-12-28
1823 2023-12-29
1824 2023-12-30
1825 2023-12-31
In [35]:
forecast_coyoacan = m_coyoacan.predict(future_coyoacan)
forecast_coyoacan[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
Out[35]:
ds yhat yhat_lower yhat_upper
1821 2023-12-27 43.698918 31.943135 56.352023
1822 2023-12-28 44.621119 32.315258 56.400635
1823 2023-12-29 46.417913 34.437141 58.565434
1824 2023-12-30 43.319657 30.873287 56.121486
1825 2023-12-31 42.109696 31.367328 53.750620
In [36]:
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_coyoacan, forecast_coyoacan)
In [37]:
plot_components_plotly(m_coyoacan, forecast_coyoacan)
In [ ]:
 

Para Alcaldia Cuajimalpa de Morelos¶

In [38]:
fecha_delitos_cuajimalpa = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
                                                         "CUAJIMALPA DE MORELOS"]
fecha_delitos_cuajimalpa=fecha_delitos_cuajimalpa.drop('alcaldia_hechos', axis=1)
fecha_delitos_cuajimalpa.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_cuajimalpa.head()
Out[38]:
ds y
10677 2019-01-01 12
10693 2019-01-02 10
10709 2019-01-03 22
10725 2019-01-04 18
10741 2019-01-05 11
In [39]:
m_cuajimalpa = Prophet()
m_cuajimalpa.fit(fecha_delitos_cuajimalpa)
14:58:09 - cmdstanpy - INFO - Chain [1] start processing
14:58:09 - cmdstanpy - INFO - Chain [1] done processing
Out[39]:
<prophet.forecaster.Prophet at 0x7fc57313eb30>
In [40]:
# Hacemos un dataframe de fechas futuras
future_cuajimalpa = m_cuajimalpa.make_future_dataframe(periods=365)
future_cuajimalpa.tail()
Out[40]:
ds
1821 2023-12-27
1822 2023-12-28
1823 2023-12-29
1824 2023-12-30
1825 2023-12-31
In [41]:
forecast_cuajimalpa = m_cuajimalpa.predict(future_cuajimalpa)
forecast_cuajimalpa[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
Out[41]:
ds yhat yhat_lower yhat_upper
1821 2023-12-27 9.506952 4.778598 14.813901
1822 2023-12-28 9.743674 4.587666 14.732781
1823 2023-12-29 10.536640 5.521917 15.378466
1824 2023-12-30 9.910433 4.980413 14.780431
1825 2023-12-31 9.983487 4.871072 14.706486
In [42]:
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_cuajimalpa, forecast_cuajimalpa)
In [43]:
plot_components_plotly(m_cuajimalpa, forecast_cuajimalpa)
In [ ]:
 

Para Alcaldia Cuauhtemoc¶

In [44]:
fecha_delitos_cuauhtemoc = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
                                                         "CUAUHTEMOC"]
fecha_delitos_cuauhtemoc=fecha_delitos_cuauhtemoc.drop('alcaldia_hechos', axis=1)
fecha_delitos_cuauhtemoc.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_cuauhtemoc.head()
Out[44]:
ds y
10678 2019-01-01 113
10694 2019-01-02 148
10710 2019-01-03 168
10726 2019-01-04 167
10742 2019-01-05 117
In [45]:
m_cuauhtemoc = Prophet()
m_cuauhtemoc.fit(fecha_delitos_cuauhtemoc)
14:58:10 - cmdstanpy - INFO - Chain [1] start processing
14:58:10 - cmdstanpy - INFO - Chain [1] done processing
Out[45]:
<prophet.forecaster.Prophet at 0x7fc5737b3ca0>
In [46]:
# Hacemos un dataframe de fechas futuras
future_cuauhtemoc = m_cuauhtemoc.make_future_dataframe(periods=365)
future_cuauhtemoc.tail()
Out[46]:
ds
1821 2023-12-27
1822 2023-12-28
1823 2023-12-29
1824 2023-12-30
1825 2023-12-31
In [47]:
forecast_cuauhtemoc = m_cuauhtemoc.predict(future_cuauhtemoc)
forecast_cuauhtemoc[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
Out[47]:
ds yhat yhat_lower yhat_upper
1821 2023-12-27 78.160737 48.436915 106.160651
1822 2023-12-28 81.332379 50.783095 111.656266
1823 2023-12-29 84.511358 54.432845 113.002878
1824 2023-12-30 69.425334 40.965955 100.117928
1825 2023-12-31 61.524175 32.917338 88.702394
In [48]:
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_cuauhtemoc, forecast_cuauhtemoc)
In [49]:
plot_components_plotly(m_cuauhtemoc, forecast_cuauhtemoc)
In [ ]:
 

Para Alcaldia Gustavo A. Madero¶

In [50]:
fecha_delitos_gustavo_madero = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
                                                         "GUSTAVO A. MADERO"]
fecha_delitos_gustavo_madero=fecha_delitos_gustavo_madero.drop('alcaldia_hechos', axis=1)
fecha_delitos_gustavo_madero.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_gustavo_madero.head()
Out[50]:
ds y
10679 2019-01-01 63
10695 2019-01-02 69
10711 2019-01-03 108
10727 2019-01-04 114
10743 2019-01-05 85
In [51]:
m_gustavo_madero = Prophet()
m_gustavo_madero.fit(fecha_delitos_gustavo_madero)
14:58:11 - cmdstanpy - INFO - Chain [1] start processing
14:58:12 - cmdstanpy - INFO - Chain [1] done processing
Out[51]:
<prophet.forecaster.Prophet at 0x7fc573de7dc0>
In [52]:
# Hacemos un dataframe de fechas futuras
future_gustavo_madero = m_gustavo_madero.make_future_dataframe(periods=365)
future_gustavo_madero.tail()
Out[52]:
ds
1821 2023-12-27
1822 2023-12-28
1823 2023-12-29
1824 2023-12-30
1825 2023-12-31
In [53]:
forecast_gustavo_madero = m_gustavo_madero.predict(future_gustavo_madero)
forecast_gustavo_madero[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
Out[53]:
ds yhat yhat_lower yhat_upper
1821 2023-12-27 50.291246 34.568281 65.965932
1822 2023-12-28 50.367989 34.165231 65.517699
1823 2023-12-29 52.378582 37.937520 67.496167
1824 2023-12-30 48.104427 31.962576 62.117204
1825 2023-12-31 48.280858 32.450352 61.997174
In [54]:
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_gustavo_madero, forecast_gustavo_madero)
In [55]:
plot_components_plotly(m_gustavo_madero, forecast_gustavo_madero)
In [ ]:
 

Para Alcaldia Iztacalco¶

In [56]:
fecha_delitos_iztacalco = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
                                                         "IZTACALCO"]
fecha_delitos_iztacalco=fecha_delitos_iztacalco.drop('alcaldia_hechos', axis=1)
fecha_delitos_iztacalco.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_iztacalco.head()
Out[56]:
ds y
10680 2019-01-01 36
10696 2019-01-02 48
10712 2019-01-03 50
10728 2019-01-04 45
10744 2019-01-05 25
In [57]:
m_iztacalco = Prophet()
m_iztacalco.fit(fecha_delitos_iztacalco)
14:58:13 - cmdstanpy - INFO - Chain [1] start processing
14:58:13 - cmdstanpy - INFO - Chain [1] done processing
Out[57]:
<prophet.forecaster.Prophet at 0x7fc57402c940>
In [58]:
# Hacemos un dataframe de fechas futuras
future_iztacalco = m_iztacalco.make_future_dataframe(periods=365)
future_iztacalco.tail()
Out[58]:
ds
1821 2023-12-27
1822 2023-12-28
1823 2023-12-29
1824 2023-12-30
1825 2023-12-31
In [59]:
forecast_iztacalco = m_iztacalco.predict(future_iztacalco)
forecast_iztacalco[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
Out[59]:
ds yhat yhat_lower yhat_upper
1821 2023-12-27 30.654362 21.387476 40.884392
1822 2023-12-28 30.768562 21.824086 40.409137
1823 2023-12-29 32.335173 23.040101 42.181306
1824 2023-12-30 31.158735 21.082293 40.432892
1825 2023-12-31 30.231890 20.648863 39.219908
In [60]:
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_iztacalco, forecast_iztacalco)
In [61]:
plot_components_plotly(m_iztacalco, forecast_iztacalco)

Para Alcaldia Iztapalapa¶

In [63]:
fecha_delitos_iztapalapa = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
                                                         "IZTAPALAPA"]
fecha_delitos_iztapalapa=fecha_delitos_iztapalapa.drop('alcaldia_hechos', axis=1)
fecha_delitos_iztapalapa.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_iztapalapa.head()
Out[63]:
ds y
10681 2019-01-01 116
10697 2019-01-02 141
10713 2019-01-03 134
10729 2019-01-04 159
10745 2019-01-05 162
In [64]:
m_iztapalapa = Prophet()
m_iztapalapa.fit(fecha_delitos_iztapalapa)
15:02:39 - cmdstanpy - INFO - Chain [1] start processing
15:02:39 - cmdstanpy - INFO - Chain [1] done processing
Out[64]:
<prophet.forecaster.Prophet at 0x7fc573aff460>
In [65]:
# Hacemos un dataframe de fechas futuras
future_iztapalapa = m_iztapalapa.make_future_dataframe(periods=365)
future_iztapalapa.tail()
Out[65]:
ds
1821 2023-12-27
1822 2023-12-28
1823 2023-12-29
1824 2023-12-30
1825 2023-12-31
In [66]:
forecast_iztapalapa = m_iztapalapa.predict(future_iztapalapa)
forecast_iztapalapa[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
Out[66]:
ds yhat yhat_lower yhat_upper
1821 2023-12-27 71.347128 50.626235 95.183273
1822 2023-12-28 71.246254 49.307810 93.058767
1823 2023-12-29 72.620833 52.010792 92.895094
1824 2023-12-30 70.056112 50.001403 90.446341
1825 2023-12-31 68.108433 46.689467 88.164449
In [67]:
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_iztapalapa, forecast_iztapalapa)
In [68]:
plot_components_plotly(m_iztapalapa, forecast_iztapalapa)
In [ ]:
 

Para Alcaldia La Magdalena Contreras¶

In [70]:
fecha_delitos_magdalena = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
                                                         "LA MAGDALENA CONTRERAS"]
fecha_delitos_magdalena=fecha_delitos_magdalena.drop('alcaldia_hechos', axis=1)
fecha_delitos_magdalena.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_magdalena.head()
Out[70]:
ds y
10682 2019-01-01 12
10698 2019-01-02 13
10714 2019-01-03 12
10730 2019-01-04 18
10746 2019-01-05 11
In [71]:
m_magdalena = Prophet()
m_magdalena.fit(fecha_delitos_magdalena)
15:06:08 - cmdstanpy - INFO - Chain [1] start processing
15:06:09 - cmdstanpy - INFO - Chain [1] done processing
Out[71]:
<prophet.forecaster.Prophet at 0x7fc582027040>
In [72]:
# Hacemos un dataframe de fechas futuras
future_magdalena = m_magdalena.make_future_dataframe(periods=365)
future_magdalena.tail()
Out[72]:
ds
1821 2023-12-27
1822 2023-12-28
1823 2023-12-29
1824 2023-12-30
1825 2023-12-31
In [73]:
forecast_magdalena = m_magdalena.predict(future_magdalena)
forecast_magdalena[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
Out[73]:
ds yhat yhat_lower yhat_upper
1821 2023-12-27 12.180702 6.585277 17.712521
1822 2023-12-28 11.904420 6.462685 17.098666
1823 2023-12-29 12.209052 6.892452 17.642030
1824 2023-12-30 12.703069 7.421491 18.411602
1825 2023-12-31 12.895278 7.528842 18.397067
In [74]:
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_magdalena, forecast_magdalena)
In [75]:
plot_components_plotly(m_magdalena, forecast_magdalena)

Para Alcaldia Miguel Hidalgo¶

In [76]:
fecha_delitos_miguel_hidalgo = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
                                                         "MIGUEL HIDALGO"]
fecha_delitos_miguel_hidalgo=fecha_delitos_miguel_hidalgo.drop('alcaldia_hechos', axis=1)
fecha_delitos_miguel_hidalgo.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_miguel_hidalgo.head()
Out[76]:
ds y
10683 2019-01-01 47
10699 2019-01-02 83
10715 2019-01-03 65
10731 2019-01-04 71
10747 2019-01-05 40
In [77]:
m_miguel_hidalgo = Prophet()
m_miguel_hidalgo.fit(fecha_delitos_miguel_hidalgo)
16:16:05 - cmdstanpy - INFO - Chain [1] start processing
16:16:05 - cmdstanpy - INFO - Chain [1] done processing
Out[77]:
<prophet.forecaster.Prophet at 0x7fc5822a60e0>
In [78]:
# Hacemos un dataframe de fechas futuras
future_miguel_hidalgo = m_miguel_hidalgo.make_future_dataframe(periods=365)
future_miguel_hidalgo.tail()
Out[78]:
ds
1821 2023-12-27
1822 2023-12-28
1823 2023-12-29
1824 2023-12-30
1825 2023-12-31
In [79]:
forecast_miguel_hidalgo = m_miguel_hidalgo.predict(future_miguel_hidalgo)
forecast_miguel_hidalgo[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
Out[79]:
ds yhat yhat_lower yhat_upper
1821 2023-12-27 26.431545 13.014266 38.766292
1822 2023-12-28 27.962868 16.168889 40.973445
1823 2023-12-29 28.327244 15.997971 41.295358
1824 2023-12-30 23.429943 10.511760 37.383735
1825 2023-12-31 21.567731 9.704525 34.775688
In [80]:
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_miguel_hidalgo, forecast_miguel_hidalgo)
In [81]:
plot_components_plotly(m_miguel_hidalgo, forecast_miguel_hidalgo)
In [ ]:
 

Para Alcaldia Milpa Alta¶

In [84]:
fecha_delitos_milpa_alta = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
                                                         "MILPA ALTA"]
fecha_delitos_milpa_alta=fecha_delitos_milpa_alta.drop('alcaldia_hechos', axis=1)
fecha_delitos_milpa_alta.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_milpa_alta.head()
Out[84]:
ds y
10684 2019-01-01 6
10700 2019-01-02 8
10716 2019-01-03 5
10732 2019-01-04 11
10748 2019-01-05 8
In [85]:
m_milpa_alta = Prophet()
m_milpa_alta.fit(fecha_delitos_milpa_alta)
16:18:24 - cmdstanpy - INFO - Chain [1] start processing
16:18:24 - cmdstanpy - INFO - Chain [1] done processing
Out[85]:
<prophet.forecaster.Prophet at 0x7fc576989ed0>
In [86]:
# Hacemos un dataframe de fechas futuras
future_milpa_alta = m_milpa_alta.make_future_dataframe(periods=365)
future_milpa_alta.tail()
Out[86]:
ds
1814 2023-12-27
1815 2023-12-28
1816 2023-12-29
1817 2023-12-30
1818 2023-12-31
In [87]:
forecast_milpa_alta= m_milpa_alta.predict(future_miguel_hidalgo)
forecast_milpa_alta[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
Out[87]:
ds yhat yhat_lower yhat_upper
1821 2023-12-27 8.090048 4.426638 11.658834
1822 2023-12-28 7.558217 4.112735 11.378234
1823 2023-12-29 7.906802 4.058092 11.523145
1824 2023-12-30 8.055827 4.566410 11.868624
1825 2023-12-31 8.627933 5.050630 12.217373
In [88]:
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_milpa_alta, forecast_milpa_alta)
In [89]:
plot_components_plotly(m_milpa_alta, forecast_milpa_alta)

Para Alcaldia Tlahuac¶

In [90]:
fecha_delitos_tlahuac = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
                                                         "TLAHUAC"]
fecha_delitos_tlahuac=fecha_delitos_tlahuac.drop('alcaldia_hechos', axis=1)
fecha_delitos_tlahuac.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_tlahuac.head()
Out[90]:
ds y
10685 2019-01-01 27
10701 2019-01-02 21
10717 2019-01-03 26
10733 2019-01-04 22
10749 2019-01-05 21
In [91]:
m_tlahuac = Prophet()
m_tlahuac.fit(fecha_delitos_tlahuac)
16:20:31 - cmdstanpy - INFO - Chain [1] start processing
16:20:31 - cmdstanpy - INFO - Chain [1] done processing
Out[91]:
<prophet.forecaster.Prophet at 0x7fc57c4ea680>
In [92]:
# Hacemos un dataframe de fechas futuras
future_tlahuac = m_tlahuac.make_future_dataframe(periods=365)
future_tlahuac.tail()
Out[92]:
ds
1821 2023-12-27
1822 2023-12-28
1823 2023-12-29
1824 2023-12-30
1825 2023-12-31
In [93]:
forecast_tlahuac= m_tlahuac.predict(future_tlahuac)
forecast_tlahuac[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
Out[93]:
ds yhat yhat_lower yhat_upper
1821 2023-12-27 17.249327 9.891160 24.092005
1822 2023-12-28 17.703450 9.962424 24.474266
1823 2023-12-29 17.756054 10.586789 25.160246
1824 2023-12-30 17.967155 10.768502 25.188595
1825 2023-12-31 18.368906 11.612108 25.440861
In [94]:
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_tlahuac, forecast_tlahuac)
In [95]:
plot_components_plotly(m_tlahuac, forecast_tlahuac)

Para Alcaldia Tlalpan¶

In [96]:
fecha_delitos_tlalpan = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
                                                         "TLALPAN"]
fecha_delitos_tlalpan=fecha_delitos_tlalpan.drop('alcaldia_hechos', axis=1)
fecha_delitos_tlalpan.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_tlalpan.head()
Out[96]:
ds y
10686 2019-01-01 47
10702 2019-01-02 41
10718 2019-01-03 40
10734 2019-01-04 60
10750 2019-01-05 37
In [97]:
m_tlalpan = Prophet()
m_tlalpan.fit(fecha_delitos_tlalpan)
16:22:11 - cmdstanpy - INFO - Chain [1] start processing
16:22:11 - cmdstanpy - INFO - Chain [1] done processing
Out[97]:
<prophet.forecaster.Prophet at 0x7fc57c419d50>
In [98]:
# Hacemos un dataframe de fechas futuras
future_tlalpan = m_tlalpan.make_future_dataframe(periods=365)
future_tlalpan.tail()
Out[98]:
ds
1821 2023-12-27
1822 2023-12-28
1823 2023-12-29
1824 2023-12-30
1825 2023-12-31
In [99]:
forecast_tlalpan= m_tlalpan.predict(future_tlalpan)
forecast_tlalpan[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
Out[99]:
ds yhat yhat_lower yhat_upper
1821 2023-12-27 31.946758 21.338862 42.377480
1822 2023-12-28 31.157856 20.530608 42.062976
1823 2023-12-29 32.697090 22.589173 42.672772
1824 2023-12-30 30.979921 20.610124 41.394078
1825 2023-12-31 30.380735 19.969065 41.774990
In [100]:
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_tlalpan, forecast_tlalpan)
In [101]:
plot_components_plotly(m_tlalpan, forecast_tlalpan)
In [ ]:
 

Para Alcaldia Venustiano Carranza¶

In [102]:
fecha_delitos_venustiano_carranza = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
                                                         "VENUSTIANO CARRANZA"]
fecha_delitos_venustiano_carranza=fecha_delitos_venustiano_carranza.drop('alcaldia_hechos', axis=1)
fecha_delitos_venustiano_carranza.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_venustiano_carranza.head()
Out[102]:
ds y
10687 2019-01-01 37
10703 2019-01-02 41
10719 2019-01-03 57
10735 2019-01-04 57
10751 2019-01-05 55
In [103]:
m_venustiano_carranza = Prophet()
m_venustiano_carranza.fit(fecha_delitos_venustiano_carranza)
16:24:28 - cmdstanpy - INFO - Chain [1] start processing
16:24:28 - cmdstanpy - INFO - Chain [1] done processing
Out[103]:
<prophet.forecaster.Prophet at 0x7fc57c670be0>
In [104]:
# Hacemos un dataframe de fechas futuras
future_venustiano_carranza = m_venustiano_carranza.make_future_dataframe(periods=365)
future_venustiano_carranza.tail()
Out[104]:
ds
1821 2023-12-27
1822 2023-12-28
1823 2023-12-29
1824 2023-12-30
1825 2023-12-31
In [105]:
forecast_venustiano_carranza= m_venustiano_carranza.predict(future_venustiano_carranza)
forecast_venustiano_carranza[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
Out[105]:
ds yhat yhat_lower yhat_upper
1821 2023-12-27 29.910790 19.270417 40.630993
1822 2023-12-28 31.553673 19.951240 41.749591
1823 2023-12-29 30.163610 19.435259 41.786603
1824 2023-12-30 28.425478 17.780848 38.850214
1825 2023-12-31 28.145893 17.487344 38.924056
In [106]:
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_venustiano_carranza, forecast_venustiano_carranza)
In [107]:
plot_components_plotly(m_venustiano_carranza, forecast_venustiano_carranza)
In [ ]:
 

Para Alcaldia Xochimilco¶

In [109]:
fecha_delitos_xochimilco = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
                                                         "XOCHIMILCO"]
fecha_delitos_xochimilco=fecha_delitos_xochimilco.drop('alcaldia_hechos', axis=1)
fecha_delitos_xochimilco.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_xochimilco.head()
Out[109]:
ds y
10688 2019-01-01 35
10704 2019-01-02 28
10720 2019-01-03 36
10736 2019-01-04 38
10752 2019-01-05 26
In [111]:
m_xochimilco = Prophet()
m_xochimilco.fit(fecha_delitos_xochimilco)
16:26:51 - cmdstanpy - INFO - Chain [1] start processing
16:26:51 - cmdstanpy - INFO - Chain [1] done processing
Out[111]:
<prophet.forecaster.Prophet at 0x7fc57c614280>
In [112]:
# Hacemos un dataframe de fechas futuras
future_xochimilco = m_xochimilco.make_future_dataframe(periods=365)
future_xochimilco.tail()
Out[112]:
ds
1821 2023-12-27
1822 2023-12-28
1823 2023-12-29
1824 2023-12-30
1825 2023-12-31
In [113]:
forecast_xochimilco= m_xochimilco.predict(future_xochimilco)
forecast_xochimilco[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
Out[113]:
ds yhat yhat_lower yhat_upper
1821 2023-12-27 19.152367 11.479859 26.211404
1822 2023-12-28 18.804598 10.913651 26.719818
1823 2023-12-29 20.276201 12.583698 28.361415
1824 2023-12-30 19.866190 12.398988 27.149700
1825 2023-12-31 20.232435 13.124785 27.997560
In [114]:
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_xochimilco, forecast_xochimilco)
In [115]:
plot_components_plotly(m_xochimilco, forecast_xochimilco)
In [ ]:
 
In [ ]: